void main() {
  /**
   * List
   *  常用属性:
   *    length      长度
   *    reversed    翻转
   *    isEmpty     是否为空
   *    isNotEmpty  是否不为空
   *
   *  常用方法:
   *    add       增加
   *    addAll    拼接数组
   *    indexOf   查找 传入具体值
   *    remove    删除 传入具体值
   *    removeAt  删除 传入索引值
   *    fillRange(start,end,value)  修改
   *    insert(index,value)     指定位置插入
   *    insertAll(index,list)   指定位置插入List
   *    toList()    其他类型转List
   *    join()      List转字符串
   *    split()     字符串转List
   *
   *  通用方法
   *    forEach     遍历List
   *    map         对每一个元素进行转换
   *    where       针对集合中元素进行过滤,返回过滤后的集合(类似filter)
   *    any         有任意一个元素满足条件,即返回true
   *    every       所有元素均满足条件,才返回true
   */

  var myList = ['苹果', '香蕉', '西瓜'];
  //常用属性
  print(myList.length);
  print(myList.isEmpty);
  print(myList.isNotEmpty);
  var reversedList = myList.reversed.toList();
  print(reversedList);

  //常用方法
  myList.add('梨子');
  print(myList);

  myList.addAll(['桃子', '葡萄', '榴莲']);
  print(myList);

  print(myList.indexOf('桃子'));

  //删除元素
  myList.remove('梨子');
  print(myList);

  myList.removeAt(3);
  print(myList);

  //修改元素
  myList.fillRange(3, 5, '车厘子');
  print(myList);

  //指定位置插入元素
  myList.insert(3, '哈密瓜');
  print(myList);

  myList.insertAll(3, ['金钱桔', '金钱桔']);
  print(myList);

  //字符串 <-> List
  var data = myList.join('-');
  print(data);

  var list2 = data.split('-');
  print(list2);

  //List遍历
  myList.forEach((element) => print(element));

  //map
  var list = [1,2,3,4,5];
  var newlist = list.map((e) => e*2);
  print(newlist);

  //where
  var newlist2 = list.where((e) => e>3);
  print(newlist2);

  //any
  var f = list.any((e) => e>3);
  print(f);

  //every
  var f2 = list.every((e) => e>3);
  print(f2);
}
